Decreasing the internal temperature of a computer in response to corrosion

ABSTRACT

In an embodiment, a current internal corrosion level at a current time is read from an internal corrosion sensor that is internal to a computer. An internal corrosion difference is calculated between the current internal corrosion level and a previous internal corrosion level. If the internal corrosion difference is more than a first threshold amount, a first action is performed that decreases an internal temperature of the computer.

FIELD

An embodiment of the invention generally relates to computer systems andmore particularly to computer systems that detect corrosion.

BACKGROUND

Computer systems typically comprise a combination of computer programsand hardware, such as semiconductors, transistors, chips, circuitboards, storage devices, and processors. Computer hardware issusceptible to damage from corrosion, due to air-borne corrosive agents,such as sulfuric acid and nitric acid. Corrosive damage may adverselyaffect the reliability of the computer and may require computer parts tobe replaced, increasing the cost of computer ownership.

SUMMARY

A method, computer-readable storage medium, and computer system areprovided. In an embodiment, a current internal corrosion level at acurrent time is read from an internal corrosion sensor that is internalto a computer. An internal corrosion difference is calculated betweenthe current internal corrosion level and a previous internal corrosionlevel. If the internal corrosion difference is more than a firstthreshold amount, a first action is performed that decreases an internaltemperature of the computer.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 depicts a high-level block diagram of an example system forimplementing an embodiment of the invention.

FIG. 2 depicts a block diagram of an example data structure forcorrosion data, according to an embodiment of the invention.

FIG. 3 depicts a flowchart of example processing for responding to aninternal corrosion sensor, according to an embodiment of the invention.

FIG. 4 depicts a flowchart of example processing for responding to anexternal corrosion sensor, according to an embodiment of the invention.

It is to be noted, however, that the appended drawings illustrate onlyexample embodiments of the invention, and are therefore not considered alimitation of the scope of other embodiments of the invention.

DETAILED DESCRIPTION

Referring to the Drawings, wherein like numbers denote like partsthroughout the several views, FIG. 1 depicts a high-level block diagramrepresentation of a computer system 100 connected to a network 130, awind sensor 190, and an external corrosion sensor 192.

The major components of the computer system 100 comprise one or moreprocessors 101, a memory 102, a terminal interface 111, a storageinterface 112, an I/O (Input/Output) device interface 113, and a networkadapter 114, all of which are communicatively coupled, directly orindirectly, for inter-component communication via a memory bus 103, anI/O bus 104, and an I/O bus interface unit 105.

The computer system 100 contains one or more general-purposeprogrammable central processing units (CPUs) 101A, 101B, 101C, and 101D,herein generically referred to as the processor 101. In an embodiment,the computer system 100 contains multiple processors typical of arelatively large system; however, in another embodiment the computersystem 100 may alternatively be a single CPU system. Each processor 101executes instructions stored in the memory 102 and may comprise one ormore levels of on-board cache.

In an embodiment, the memory 102 may comprise a random-accesssemiconductor memory, storage device, or storage medium (either volatileor non-volatile) for storing or encoding data and programs. In anotherembodiment, the memory 102 represents the entire virtual memory of thecomputer system 100, and may also include the virtual memory of othercomputer systems coupled to the computer system 100 or connected via thenetwork 130. The memory 102 is conceptually a single monolithic entity,but in other embodiments the memory 102 is a more complex arrangement,such as a hierarchy of caches and other memory devices. For example,memory may exist in multiple levels of caches, and these caches may befurther divided by function, so that one cache holds instructions whileanother holds non-instruction data, which is used by the processor orprocessors. Memory may be further distributed and associated withdifferent CPUs or sets of CPUs, as is known in any of various so-callednon-uniform memory access (NUMA) computer architectures.

The memory 102 stores or encodes a controller 150, corrosion data 152,high priority processes 154, and low priority processes 156. Althoughthe controller 150, the corrosion data 152, the high priority processes154, and the low priority processes 156 are illustrated as beingcontained within the memory 102 in the computer system 100, in otherembodiments some or all of them may be on different computer systems andmay be accessed remotely, e.g., via the network 130. For example, thecontroller 150, the corrosion data 152, the high priority processes 154,and the low priority processes 156 may be stored in memory in thecomputers of the network 130. The computer system 100 may use virtualaddressing mechanisms that allow the programs of the computer system 100to behave as if they only have access to a large, single storage entityinstead of access to multiple, smaller storage entities. Thus, while thecontroller 150, the corrosion data 152, the high priority processes 154,and the low priority processes 156 are illustrated as being containedwithin the memory 102, these elements are not necessarily all completelycontained in the same storage device at the same time. Further, althoughthe controller 150, the corrosion data 152, the high priority processes154, and the low priority processes 156 are illustrated as beingseparate entities, in other embodiments some of them, portions of someof them, or all of them may be packaged together.

In an embodiment, the controller 150, the high priority processes 154,and/or the low priority processes 156 comprise instructions orstatements that execute on the processor 101 or instructions orstatements that are interpreted by instructions or statements thatexecute on the processor 101, to carry out the functions as furtherdescribed below with reference to FIGS. 2, 3, and 4. In anotherembodiment, the controller 150, the high priority processes 154, and/orthe low priority processes 156 are implemented in hardware viasemiconductor devices, chips, logical gates, circuits, circuit cards,and/or other physical hardware devices in lieu of, or in addition to, aprocessor-based system. In an embodiment, the controller 150, the highpriority processes 154, and/or the low priority processes 156 comprisedata, in addition to instructions or statements.

The high priority processes 154 have a higher priority than the lowerpriority processes 156. In an embodiment, any number of priorities mayexist. In an embodiment, higher priority processes execute on more orfaster of the processors 101 than the lower priority processes and/orreceive more processor time. In an embodiment, higher priority processesreceive allocations of more memory 102 or other resources (e.g., networkbandwidth) than lower priority processes.

The memory bus 103 provides a data communication path for transferringdata among the processor 101, the memory 102, and the I/O bus interfaceunit 105. The I/O bus interface unit 105 is further coupled to thesystem I/O bus 104 for transferring data to and from the various I/Ounits. The I/O bus interface unit 105 communicates with multiple I/Ointerface units 111, 112, 113, and 114, which are also known as I/Oprocessors (IOPs) or I/O adapters (IOAs), through the system I/O bus104.

The I/O interface units support communication with a variety of storageand I/O devices. For example, the terminal interface unit 111 supportsthe attachment of one or more user I/O devices 121, which may compriseuser output devices (such as a video display device, speaker, and/ortelevision set) and user input devices (such as a keyboard, mouse,keypad, touchpad, trackball, buttons, light pen, or other pointingdevice). A user may manipulate the user input devices using a userinterface, in order to provide input data and commands to the user I/Odevice 121 and the computer system 100, and may receive output data viathe user output devices. For example, a user interface may be presentedvia the user I/O device 121, such as displayed on a display device,played via a speaker, or printed via a printer.

The storage interface unit 112 supports the attachment of one or moredisk drives or direct access storage devices 125 (which are typicallyrotating magnetic disk drive storage devices, although they couldalternatively be other storage devices, including arrays of disk drivesconfigured to appear as a single large storage device to a hostcomputer). In another embodiment, the storage device 125 may beimplemented via any type of secondary storage device. The contents ofthe memory 102, or any portion thereof, may be stored to and retrievedfrom the storage device 125, as needed. The I/O device interface 113provides an interface to any of various other input/output devices ordevices of other types, such as printers, fax machines, the internalcorrosion sensor 126, the fan 128, the external wind sensor 190, and theexternal corrosion sensor 192. The network adapter 114 provides one ormore communications paths from the computer system 100 to other digitaldevices and computer systems; such paths may comprise, e.g., one or morenetworks 130.

Although the memory bus 103 is shown in FIG. 1 as a relatively simple,single bus structure providing a direct communication path among theprocessors 101, the memory 102, and the I/O bus interface unit 105, infact the memory bus 103 may comprise multiple different buses orcommunication paths, which may be arranged in any of various forms, suchas point-to-point links in hierarchical, star or web configurations,multiple hierarchical buses, parallel and redundant paths, or any otherappropriate type of configuration. Furthermore, while the I/O businterface unit 105 and the I/O bus 104 are shown as single respectiveunits, the computer system 100 may, in fact, contain multiple I/O businterface units 105 and/or multiple I/O buses 104. While multiple I/Ointerface units are shown, which separate the system I/O bus 104 fromvarious communications paths running to the various I/O devices, inother embodiments some or all of the I/O devices are connected directlyto one or more system I/O buses.

The internal corrosion sensor 126 senses or detects corrosive agents inthe air internal to the computer 100 and reports the amount of thedetected corrosive agents over time. In an embodiment, the corrosionsensor 126 comprises a conductive material, e.g., a silver filament,which corrodes over time, in response to the action of the airbornecorrosive agents. In response to the corrosion, the electricalresistance of the conductive material changes over time, as less andless of the conductive material remains, and the internal corrosionsensor 126 reports the changing resistance, over time, to the executingcontroller 150, via the I/O device interface 113. In other embodiments,any appropriate corrosion sensor may be used.

The fan 128 comprises rotating vanes or blades, which cause air to move.The fan 128 may be powered by an electrical motor that operates atvariable speeds, to provide variable airflow and cooling power. The fan128 operates to cool the computer 100 by drawing cooler air into thecomputer 100 from the outside, by expelling warm air from inside of thecomputer 100 to the outside, or by moving air across a heat sink orelectrical component, in order to cool the computer 100 via heatconduction.

The wind sensor 190 is external to the computer 100 and senses ormeasures and reports the external wind speed and external wind directionto the computer 100. The wind sensor 190 may be implemented as anultrasonic wind sensor, but in other embodiments any appropriate type ofwind sensor may be used. The wind sensor 190 may be implemented as asingle unit that measures both wind speed and wind direction or asseparate units that measure wind speed and wind direction, individually.A wind sensor that measures wind speed is also known as an anemometerand in various embodiments is implemented as a cup anemometer, a plateanemometer, a sonic anemometer, a laser Doppler anemometer, a hot wireanemometer, or any other appropriate type of anemometer.

The external corrosion sensor 192 is disposed external to, or outsideof, the computer 100. In various embodiments, the external sensor 192may be within the building that houses the computer 100 or may beoutside of the building. In various embodiments, the external corrosionsensor 192 may be of the same type and construction as the internalcorrosion sensor 126 or a different type and construction.

In various embodiments, the computer system 100 is a multi-usermainframe computer system, a single-user system, or a server computer orsimilar device that has little or no direct user interface, but receivesrequests from other computer systems (clients). In other embodiments,the computer system 100 is implemented as a desktop computer, portablecomputer, laptop or notebook computer, tablet computer, pocket computer,telephone, smart phone, pager, automobile, teleconferencing system,appliance, or any other appropriate type of electronic device.

The network 130 may be any suitable network or combination of networksand may support any appropriate protocol suitable for communication ofdata and/or code to/from the computer system 100. In variousembodiments, the network 130 may represent a storage device or acombination of storage devices, either connected directly or indirectlyto the computer system 100. In another embodiment, the network 130 maysupport wireless communications. In another embodiment, the network 130may support hard-wired communications, such as a telephone line orcable. In another embodiment, the network 130 may be the Internet andmay support IP (Internet Protocol). In another embodiment, the network130 is implemented as a local area network (LAN) or a wide area network(WAN). In another embodiment, the network 130 is implemented as ahotspot service provider network. In another embodiment, the network 130is implemented an intranet. In another embodiment, the network 130 isimplemented as any appropriate cellular data network, cell-based radionetwork technology, or wireless network. In another embodiment, thenetwork 130 is implemented as any suitable network or combination ofnetworks. Although one network 130 is shown, in other embodiments anynumber of networks (of the same or different types) may be present.

FIG. 1 is intended to depict the representative major components of thecomputer system 100, the network 130, the wind sensor 190, and theexternal corrosion sensor 192. But, individual components may havegreater complexity than represented in FIG. 1, components other than orin addition to those shown in FIG. 1 may be present, and the number,type, and configuration of such components may vary. Several particularexamples of such additional complexity or additional variations aredisclosed herein; these are by way of example only and are notnecessarily the only such variations. The various program componentsillustrated in FIG. 1 and implementing various embodiments of theinvention may be implemented in a number of manners, including usingvarious computer applications, routines, components, programs, objects,modules, data structures, etc., and are referred to hereinafter as“computer programs,” or simply “programs.”

The computer programs comprise one or more instructions or statementsthat are resident at various times in various memory and storage devicesin the computer system 100 and that, when read and executed by one ormore processors in the computer system 100 or when interpreted byinstructions that are executed by one or more processors, cause thecomputer system 100 to perform the actions necessary to execute steps orelements comprising the various aspects of embodiments of the invention.Aspects of embodiments of the invention may be embodied as a system,method, or computer program product. Accordingly, aspects of embodimentsof the invention may take the form of an entirely hardware embodiment,an entirely program embodiment (including firmware, resident programs,micro-code, etc., which are stored in a storage device) or an embodimentcombining program and hardware aspects that may all generally bereferred to herein as a “circuit,” “module,” or “system.” Further,embodiments of the invention may take the form of a computer programproduct embodied in one or more computer-readable medium(s) havingcomputer-readable program code embodied thereon.

Any combination of one or more computer-readable medium(s) may beutilized. The computer-readable medium may be a computer-readable signalmedium or a computer-readable storage medium. A computer-readablestorage medium, may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (an non-exhaustive list) of the computer-readablestorage media may comprise: an electrical connection having one or morewires, a portable computer diskette, a hard disk (e.g., the storagedevice 125), a random access memory (RAM) (e.g., the memory 102), aread-only memory (ROM), an erasable programmable read-only memory(EPROM) or Flash memory, an optical fiber, a portable compact discread-only memory (CD-ROM), an optical storage device, a magnetic storagedevice, or any suitable combination of the foregoing. In the context ofthis document, a computer-readable storage medium may be any tangiblemedium that can contain, or store, a program for use by or in connectionwith an instruction execution system, apparatus, or device.

A computer-readable signal medium may comprise a propagated data signalwith computer-readable program code embodied thereon, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that communicates,propagates, or transports a program for use by, or in connection with,an instruction execution system, apparatus, or device. Program codeembodied on a computer-readable medium may be transmitted using anyappropriate medium, including but not limited to, wireless, wire line,optical fiber cable, Radio Frequency, or any suitable combination of theforegoing.

Computer program code for carrying out operations for aspects ofembodiments of the present invention may be written in any combinationof one or more programming languages, including object orientedprogramming languages and conventional procedural programming languages.The program code may execute entirely on the user's computer, partly ona remote computer, or entirely on the remote computer or server. In thelatter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider).

Aspects of embodiments of the invention are described below withreference to flowchart illustrations and/or block diagrams of methods,apparatus (systems), and computer program products. Each block of theflowchart illustrations and/or block diagrams, and combinations ofblocks in the flowchart illustrations and/or block diagrams may beimplemented by computer program instructions embodied in acomputer-readable medium. These computer program instructions may beprovided to a processor of a general purpose computer, special purposecomputer, or other programmable data processing apparatus to produce amachine, such that the instructions, which execute via the processor ofthe computer or other programmable data processing apparatus, createmeans for implementing the functions/acts specified by the flowchartand/or block diagram block or blocks. These computer programinstructions may also be stored in a computer-readable medium that candirect a computer, other programmable data processing apparatus, orother devices to function in a particular manner, such that theinstructions stored in the computer-readable medium produce an articleof manufacture, including instructions that implement the function/actspecified by the flowchart and/or block diagram block or blocks.

The computer programs defining the functions of various embodiments ofthe invention may be delivered to a computer system via a variety oftangible computer-readable storage media that may be operatively orcommunicatively connected (directly or indirectly) to the processor orprocessors. The computer program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other devicesto cause a series of operational steps to be performed on the computer,other programmable apparatus, or other devices to produce acomputer-implemented process, such that the instructions, which executeon the computer or other programmable apparatus, provide processes forimplementing the functions/acts specified in the flowcharts and/or blockdiagram block or blocks.

The flowchart and the block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products, according to variousembodiments of the present invention. In this regard, each block in theflowcharts or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). In some embodiments, thefunctions noted in the block may occur out of the order noted in thefigures. For example, two blocks shown in succession may, in fact, beexecuted substantially concurrently, or the blocks may sometimes beexecuted in the reverse order, depending upon the functionalityinvolved. Each block of the block diagrams and/or flowchartillustration, and combinations of blocks in the block diagrams and/orflow chart illustrations, can be implemented by special purposehardware-based systems that perform the specified functions or acts, incombinations of special purpose hardware and computer instructions.

Embodiments of the invention may also be delivered as part of a serviceengagement with a client corporation, nonprofit organization, governmententity, or internal organizational structure. Aspects of theseembodiments may comprise configuring a computer system to perform, anddeploying computing services (e.g., computer-readable code, hardware,and web services) that implement, some or all of the methods describedherein. Aspects of these embodiments may also comprise analyzing theclient company, creating recommendations responsive to the analysis,generating computer-readable code to implement portions of therecommendations, integrating the computer-readable code into existingprocesses, computer systems, and computing infrastructure, metering useof the methods and systems described herein, allocating expenses tousers, and billing users for their use of these methods and systems. Inaddition, various programs described hereinafter may be identified basedupon the application for which they are implemented in a specificembodiment of the invention. But, any particular program nomenclaturethat follows is used merely for convenience, and thus embodiments of theinvention are not limited to use solely in any specific applicationidentified and/or implied by such nomenclature. The exemplaryenvironments illustrated in FIG. 1 are not intended to limit the presentinvention. Indeed, other alternative hardware and/or programenvironments may be used without departing from the scope of embodimentsof the invention.

FIG. 2 depicts a block diagram of an example data structure forcorrosion data 152, according to an embodiment of the invention. Thecorrosion data 152 comprises internal corrosion data 202 and externalcorrosion data 204. The internal corrosion data 202 comprises entries,each comprising a time field 210, an internal corrosion level field 212,and an internal corrosion difference field 214.

The time field 210, in each entry, specifies the time and/or date atwhich the values in the internal corrosion level field 212 and theinternal corrosion difference field 214, in the same entry, weredetected, calculated, determined, or saved to the internal corrosiondata 202.

The internal corrosion level field 212, in each entry, specifies thecorrosion level detected by the internal corrosion sensor 126 andreceived by the controller 150 from the internal corrosion sensor 126,at the time specified by the time field 210, in the same entry. Invarious embodiments, the values in the internal corrosion level field212 are specified in units of resistance (e.g., ohms) detected by theinternal corrosion sensor 126, a percentage of the maximum resistance ofthe filament of the internal corrosion sensor 126 that the internalcorrosion sensor 126 detected at the time 210 in the same entry, apercentage of a filament of the internal corrosion sensor 126 that hadbeen corroded or was missing at the time 210 in the same entry, apercentage of the filament of the internal corrosion sensor 126 thatremained at the time 210 in the same entry, or any other appropriateunits.

The internal corrosion difference field 214, in each entry, specifiesthe difference between the value of the internal corrosion level field212, in the same entry, and the value of the internal corrosion levelfield 212, in the immediately previous (in time) entry in the internalcorrosion data 202. Thus, the internal corrosion difference field 214specifies the amount of corrosion that has occurred between entries inthe internal corrosion data 202. For example, the internal corrosiondifference field 214 specifies “0.01” at a time of “8:15” because theinternal corrosion level 212 at the same time of “8:15” minus theinternal corrosion level 212 of “0.1” at the immediately previous time(within the internal corrosion data 202) of “8:00” is “0.01.”

The external corrosion data 204 comprises entries, each of whichcomprise a time field 250, an external corrosion level field 252, anexternal corrosion difference field 254, a wind speed field 256, a winddirection field 258, and a predicted internal corrosion level field 260.

The time field 250, in each entry of the external corrosion data 204,specifies the time and/or date at which the values in the externalcorrosion level field 252, the external corrosion difference field 254,the wind speed 256, the wind direction 258, and the predicted internalcorrosion level field 260, in the same entry, were detected, received,calculated, determined, or saved to the external corrosion data 204.

The external corrosion level field 252, in each entry of the externalcorrosion data 204, specifies the corrosion level detected by theexternal corrosion sensor 192 and received by the controller 150 fromthe external corrosion sensor 192, at the time specified by the timefield 250, in the same entry. In various embodiments, the values in theexternal corrosion level field 252 are specified in units of resistance(e.g., ohms) detected by the external corrosion sensor 192, a percentageof the maximum resistance of the filament of the external corrosionsensor 192 that the external corrosion sensor 192 detected at the time250 in the same entry, a percentage of a filament of the externalcorrosion sensor 192 that had been corroded or was missing at the time250 in the same entry, a percentage of the filament of the externalcorrosion sensor 192 that remained at the time 250 in the same entry, orany other appropriate units.

The external corrosion difference field 254, in each entry, specifiesthe difference between the value of the external corrosion level field252, in the same entry, and the value of the external corrosion levelfield 252, in the immediately previous (in time) entry. Thus, theexternal corrosion difference field 254 specifies the amount ofcorrosion that has occurred between entries in the external corrosiondata 204. For example, the external corrosion difference field 254specifies “0.02” at a time 250 of “8:15” because the external corrosionlevel 252 of “0.22” at the time 250 of “8:15” minus the externalcorrosion level 252 of “0.2” at the time 250 of “8:00” is “0.02.”

The wind speed field 256, in each entry, specifies the speed or velocityof the wind, as detected by the wind sensor 190, at the time 250, in thesame entry. In various embodiments, the wind speed field 256 specifiesunits in values of miles per hour, kilometers per hour, or any otherappropriate units of speed or rate. The wind direction field 258, ineach entry, specifies the direction of the wind, as detected by the windsensor 190, at the time 250, in the same entry. In an embodiment, thewind direction field 258 specifies the direction from which the windoriginates. For example, the wind direction 258 that specifies a north(N) wind describes a wind that originates from the north and blows tothe south. In various embodiments, the wind direction 258 is specifiedin cardinal directions, intercardinal directions, ordinal directions, orin azimuth degrees. Thus, for example, a wind originating from the southhas azimuth degrees of 180 degrees, and a wind originating from the easthas azimuth degrees of 90 degrees.

The predicted internal corrosion level field 260, in each entry,specifies the internal corrosion level that the controller 150 predictedor estimated would occur at the next time after the time 250 of theentry of the predicted internal corrosion level field 260. For example,the predicted internal corrosion level 260 of “0.15” at the time 250 of“8:15” means that the controller 150 estimated or predicted at the time250 of “8:15” that at the next time 210 of “8:30” the internal corrosionlevel 212 would be “0.15.”

FIG. 3 depicts a flowchart of example processing for responding to aninternal corrosion sensor, according to an embodiment of the invention.Control begins at block 300. Control then continues to block 302 wherethe controller 150 sets the current entry to be the first available orunused entry in the internal corrosion data 202. Control then continuesto block 305 where the controller 150 reads the current internalcorrosion level from the internal corrosion sensor 126 at a current timeand saves the current time 210 and the current internal corrosion level212 to the current entry in the internal corrosion data 202. Controlthen continues to block 310 where the controller 150 calculates theinternal corrosion difference 214 between the current internal corrosionlevel 212 in the current entry and the previous internal corrosion levelin the immediately previous entry at the immediately previous time(i.e., the controller 150 subtracts the previous internal corrosionlevel from the current internal corrosion level) and stores the internalcorrosion difference 214 to the current entry in the internal corrosiondata 202. Control then continues to block 315 where the controller 150determines whether the internal corrosion difference 214 in the currententry is more than a first threshold amount. In an embodiment, thecontroller 150 receives various threshold amounts from the network 130,from a designer of the controller 150, from the user I/O device 121, orfrom an application.

If the determination at block 315 is true, then the internal corrosiondifference 214 in the current entry is more than the first thresholdamount, so control continues to block 320 where the controller 150performs an action that decreases the internal temperature of thecomputer 100. In various embodiments, the action may comprise increasingthe speed of the fan 128, lowering the clock frequency (down-clocking)of the processor 101, lowering the clock frequency of the memory bus103, powering off, suspending, or disabling unused cores of theprocessor 101 or unused chips, unused DIMMs (Dynamic Inline MemoryModule) of the memory 102, unused SIMMs (Single Inline Memory Module) ofthe memory 102, down-clocking, suspending or disabling selected of theinterface units 111, 112, 113, and/or 114, or suspending execution ofthe low priority processes 156, all of which may result in lowering theinternal temperature of the computer 100.

Embodiments of the invention may reduce the rate of corrosion ofcomponents of the computer 101 because the rate of corrosion (i.e., rateof chemical reaction) is exponentially tied to temperature.Specifically, the Arrhenius equation gives the rate of reaction:

k=Ae ^(−E) _(—) ^(a/(RT))

where E_a is the reaction's activation energy, R is the Universal gasconstant (8.314 . . . J/mol K), e is the natural logarithm base (2.7182. . . ), T is temperature in Kelvin units, and A is a pre-exponentialfactor (in chemical kinetics, A is the frequency of molecule collisionsin (seconds)⁻¹). By lowering the value of T (the temperature in Kelvin),the rate of corrosion k drops exponentially. Embodiments of theinvention increase the value of A linearly by increasing the air flow inthe computer 100, but the corresponding reduction in T more thancompensates for this increase.

Control then continues to block 325 where the controller 150 sets thecurrent entry to be the next available entry in the internal corrosiondata 202. Control then returns to block 305, as previously describedabove.

If the determination at block 315 is false, then the internal corrosiondifference 214 in the current entry is not more than (is less than orequal to) the first threshold amount, so control continues to block 330where the controller 150 determines whether the internal corrosiondifference 214 in the current entry is less than a second thresholdamount, which in various embodiments may be the same or different fromthe first threshold amount.

If the determination at block 330 is true, then the internal corrosiondifference 214 in the current entry is less than the second thresholdamount, so control continues to block 335 where the controller 150performs an action that allows the internal temperature of the computer100 to increase. In various embodiments, actions that allow the internaltemperature to increase comprise decreasing the speed of the fan 128,increasing the clock frequency of the processor 101, increasing theclock frequency of the memory bus 103, powering on or starting cores ofthe processor 101 or chips, DIMMs, or SIMMs of the memory 102, raisingthe clock frequency or powering on selected of the interface units 111,112, 113, and/or 114, or starting execution of the low priorityprocesses 156. Control then continues to block 325, as previouslydescribed above.

If the determination at block 330 is false, then the internal corrosiondifference 214 in the current entry is not less than (is greater than orequal to) the second threshold amount, so control continues to block 340where the controller 150 sets the current entry to be next available orunused entry in the internal corrosion data 202. Control then returns toblock 305, as previously described above.

FIG. 4 depicts a flowchart of example processing for responding to anexternal corrosion sensor, according to an embodiment of the invention.In various embodiments, the processing of FIGS. 3 and 4 executeconcurrently, substantially concurrently, or interleaved on the same ordifferent processors via time slicing, multi-processing,multi-threading, or multi-programming techniques. Control begins atblock 400. Control then continues to block 402 where the controller 150initializes the current entry in the external corrosion data 204 to bethe first available or unused entry in the external corrosion data 204.Control then continues to block 405 where the controller 150 reads thecurrent external corrosion level from the external corrosion sensor 192at the current time, reads the current wind direction and wind speedfrom the wind sensor 190 at the current time, and saves the currenttime, the current external corrosion level 252, the current winddirection 258, and the current wind speed 256 to the current entry inthe external corrosion data 204.

Control then continues to block 410 where the controller 150 calculatesthe external corrosion difference 254 between the current externalcorrosion level 252 in the current entry and the previous externalcorrosion level 252 in the immediately previous entry at the immediatelyprevious time 250 and stores the external corrosion difference 254 tothe current entry in the external corrosion data 204. Control thencontinues to block 415 where the controller 150 estimates a predictedinternal corrosion level 260 based on the external corrosion difference254 at the current time 250, the current internal corrosion level 212 atthe current time 210, the current wind speed 256 at the current time250, the current wind direction 258 at the current time 250, and thehistorical values of the wind speed 256, the wind direction 258, andinternal and external corrosion levels at previous times that are beforethe current time.

In an embodiment, the controller 150 estimates the predicted internalcorrosion level 260 by selecting a previous (in time) wind speed 256 andprevious (in time) wind direction 258 that most closely match thecurrent wind speed 256 and current wind direction 258. The previous windspeed 256 and previous wind direction 258 were detected by the windsensor 190 at a previous time, and the previous time is before thecurrent time. In an embodiment, the controller 150 determines that theprevious wind speed 256 and previous wind direction 258 most closelymatch the current wind speed 256 and current wind direction 258 by, foreach previous entry, calculating the absolute value of the differencebetween the current wind speed 256 and the previous wind speed 256, andadding the result to the absolute value of the difference between theprevious wind direction 258 and the current wind direction 258 (indegrees). The controller 150 then determines the entry in the externalcorrosion data 204 whose sum of the absolute values is the smallest. Inan embodiment, the controller 150 multiplies the absolute values byweight values, which are set by the designer of the controller 150 orreceived from the network 130, from the user I/O device 121, or from anapplication. The controller 150 further determines a previous externalcorrosion difference 254 that was detected at the previous time of theselected entry and determines a next internal corrosion difference 214that was detected at an immediately next time after the previous time ofthe selected entry. The controller 150 then divides the next internalcorrosion difference 214 by the previous external corrosion difference254 to yield a result and adds the result to the current internalcorrosion level 212 to yield the predicted internal corrosion level 260,which the controller saves to the current entry in the externalcorrosion data 204.

Control then continues to block 420 where the controller 150 determineswhether the current predicted internal corrosion level 260 at thecurrent time 250 is greater than the current internal corrosion level212 at the current time 210 by more than a third threshold amount. Ifthe determination at block 420 is true, then the predicted internalcorrosion level 260 is greater than the current internal corrosion level212 at the current time by more than a third threshold amount, socontrol continues to block 425 where the controller 150 performs anaction that decreases the internal temperature of the computer 100. Invarious embodiments, the action performed by the logic of block 425 thatdecreases the internal temperature of the computer 100 may be the sameor different from the actions performed by the logic of FIG. 3 thatdecrease the internal temperature of the computer 100. Control thencontinues to block 430 where the controller 150 sets the current entryto be the next available or unused entry in the external corrosion data204. Control then returns to block 405, as previously described above.

If the determination at block 420 is false, then the current predictedinternal corrosion level 260 is not greater than the current internalcorrosion level 212 at the current time by more than the third thresholdamount, so control continues to block 435 where the controller 150determines whether the predicted internal corrosion level 260 is lessthan the current internal corrosion level 212 by more than a fourththreshold amount.

If the determination at block 435 is true, then the predicted internalcorrosion level 260 is less than the current internal corrosion level212 by more than the fourth threshold amount, so control continues toblock 440 where the controller 150 performs an action that allows theinternal temperature of the computer 100 to increase. In variousembodiments, the action performed by the processing of block 440 is thesame different than the actions of FIG. 3 that allow the internaltemperature of the computer 100 to increase. Control then continues toblock 430 where the controller 150 sets the current entry to be the nextavailable or unused entry in the external corrosion data 204. Controlthen returns to block 405, as previously described above.

If the determination at block 435 is false, then the predicted internalcorrosion level 260 is not greater than current internal corrosion level212 by less than the fourth threshold amount, so control continues toblock 445 where the controller 150 sets the current entry in theexternal corrosion data 204 to be the next available or unused entry inthe external corrosion data 204. Control then returns to block 405, aspreviously described above.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a,” “an,” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of the stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof. In the previous detailed descriptionof exemplary embodiments of the invention, reference was made to theaccompanying drawings (where like numbers represent like elements),which form a part hereof, and in which is shown by way of illustrationspecific exemplary embodiments in which the invention may be practiced.These embodiments were described in sufficient detail to enable thoseskilled in the art to practice the invention, but other embodiments maybe utilized and logical, mechanical, electrical, and other changes maybe made without departing from the scope of the present invention. Inthe previous description, numerous specific details were set forth toprovide a thorough understanding of embodiments of the invention. But,embodiments of the invention may be practiced without these specificdetails. In other instances, well-known circuits, structures, andtechniques have not been shown in detail in order not to obscureembodiments of the invention.

Different instances of the word “embodiment” as used within thisspecification do not necessarily refer to the same embodiment, but theymay. Any data and data structures illustrated or described herein areexamples only, and in other embodiments, different amounts of data,types of data, fields, numbers and types of fields, field names, numbersand types of rows, records, entries, or organizations of data may beused. In addition, any data may be combined with logic, so that aseparate data structure is not necessary. The previous detaileddescription is, therefore, not to be taken in a limiting sense.

What is claimed is:
 1. A method comprising: reading a current internal corrosion level at a current time from an internal corrosion sensor that is internal to a computer; calculating an internal corrosion difference between the current internal corrosion level and a previous internal corrosion level; and if the internal corrosion difference is more than a first threshold amount, performing a first action that decreases an internal temperature of the computer.
 2. The method of claim 1, further comprising: if the internal corrosion difference is less than a second threshold amount, performing a second action that allows the internal temperature of the computer to increase.
 3. The method of claim 2, further comprising: reading a current external corrosion level at the current time from an external corrosion sensor that is external to the computer; reading a current wind speed and current wind direction at the current time from a wind sensor that is external to the computer; calculating a current external corrosion difference between the current external corrosion level and a previous external corrosion level; and estimating a predicted internal corrosion level based on the current external corrosion difference, the current internal corrosion level, the current wind speed, and the current wind direction.
 4. The method of claim 3, further comprising: if the predicted internal corrosion level is greater than the current internal corrosion level by more than a third threshold amount, performing a third action that decreases the internal temperature of the computer.
 5. The method of claim 3, further comprising: if the predicted internal corrosion level is greater than the current internal corrosion level by less than a fourth threshold amount, performing a fourth action that allows the internal temperature of the computer to increase.
 6. The method of claim 3, wherein the estimating the predicted internal corrosion level further comprises: finding a previous wind speed and previous wind direction that most closely match the current wind speed and current wind direction, wherein the previous wind speed and previous wind direction were detected by the wind sensor at a previous time, wherein the previous time is before the current time; and determining a previous external corrosion difference that was detected at the previous time.
 7. The method of claim 6, wherein the estimating the predicted internal corrosion level further comprises: determining a next internal corrosion difference that was detected at a next time after the previous time.
 8. The method of claim 7, wherein the estimating the predicted internal corrosion level further comprises: dividing the next internal corrosion difference by the previous external corrosion difference to yield a result and adding the result to the current internal corrosion level to yield the predicted internal corrosion level.
 9. A computer-readable storage medium encoded with instructions, wherein the instructions when executed comprise: reading a current internal corrosion level at a current time from an internal corrosion sensor that is internal to a computer; calculating an internal corrosion difference between the current internal corrosion level and a previous internal corrosion level; if the internal corrosion difference is more than a first threshold amount, performing a first action that decreases an internal temperature of the computer; and if the internal corrosion difference is less than a second threshold amount, performing a second action that allows the internal temperature of the computer to increase.
 10. The computer-readable storage medium of claim 9, further comprising: reading a current external corrosion level at the current time from an external corrosion sensor that is external to the computer; reading a current wind speed and current wind direction at the current time from a wind sensor that is external to the computer; calculating a current external corrosion difference between the current external corrosion level and a previous external corrosion level; and estimating a predicted internal corrosion level based on the current external corrosion difference, the current internal corrosion level, the current wind speed, and the current wind direction.
 11. The computer-readable storage medium of claim 10, further comprising: if the predicted internal corrosion level is greater than the current internal corrosion level by more than a third threshold amount, performing a third action that decreases the internal temperature of the computer.
 12. The computer-readable storage medium of claim 10, further comprising: if the predicted internal corrosion level is greater than the current internal corrosion level by less than a fourth threshold amount, performing a fourth action that allows the internal temperature of the computer to increase.
 13. The computer-readable storage medium of claim 12, wherein the estimating the predicted internal corrosion level further comprises: finding a previous wind speed and previous wind direction that most closely match the current wind speed and current wind direction, wherein the previous wind speed and previous wind direction were detected by the wind sensor at a previous time, wherein the previous time is before the current time; and determining a previous external corrosion difference that was detected at the previous time.
 14. The computer-readable storage medium of claim 13, wherein the estimating the predicted internal corrosion level further comprises: determining a next internal corrosion difference that was detected at a next time after the previous time.
 15. The computer-readable storage medium of claim 14, wherein the estimating the predicted internal corrosion level further comprises: dividing the next internal corrosion difference by the previous external corrosion difference to yield a result and adding the result to the current internal corrosion level to yield the predicted internal corrosion level.
 16. A computer comprising: a processor; an internal corrosion sensor communicatively connected to the processor, wherein the internal corrosion sensor detects airborne corrosive agents that are internal to the computer; and memory communicatively connected to the processor, wherein the memory is encoded with instructions, and wherein the instructions when executed by the processor comprise reading a current internal corrosion level at a current time from the internal corrosion sensor that is internal to the computer, calculating an internal corrosion difference between the current internal corrosion level and a previous internal corrosion level, if the internal corrosion difference is more than a first threshold amount, performing a first action that decreases an internal temperature of the computer, if the internal corrosion difference is less than a second threshold amount, performing a second action that allows the internal temperature of the computer to increase, reading a current external corrosion level at the current time from an external corrosion sensor that is external to the computer, wherein the external corrosion sensor detects airborne corrosive agents that are external to the computer, reading a current wind speed and current wind direction at the current time from a wind sensor that is external to the computer, calculating a current external corrosion difference between the current external corrosion level and a previous external corrosion level, and estimating a predicted internal corrosion level based on the current external corrosion difference, the current internal corrosion level, the current wind speed, and the current wind direction.
 17. The computer of claim 16, wherein the instructions further comprise: if the predicted internal corrosion level is greater than the current internal corrosion level by more than a third threshold amount, performing a third action that decreases the internal temperature of the computer.
 18. The computer of claim 17, wherein the instructions further comprise: if the predicted internal corrosion level is greater than the current internal corrosion level by less than a fourth threshold amount, performing a fourth action that allows the internal temperature of the computer to increase.
 19. The computer of claim 18, wherein the estimating the estimating the predicted internal corrosion level further comprises: finding a previous wind speed and previous wind direction that most closely match the current wind speed and current wind direction, wherein the previous wind speed and previous wind direction were detected by the wind sensor at a previous time, wherein the previous time is before the current time; determining a previous external corrosion difference that was detected at the previous time; and determining a next internal corrosion difference that was detected at a next time after the previous time.
 20. The computer of claim 19, wherein the estimating the predicted internal corrosion level further comprises: dividing the next internal corrosion difference by the previous external corrosion difference to yield a result and adding the result to the current internal corrosion level to yield the predicted internal corrosion level. 